The subject system and method are generally directed to automatically establishing a user-friendly, efficient, and effective debugging environment for electronic design automation (EDA) software environments. The system and method provide automated measures for interacting with a developer, automatically locating both a source file and a specific callback function to be debugged responsive to a developer merely selecting a parameter. The system and method automatically map and determine which source file and which callback function are implicated by the indicated parameter. Once the correct callback function and source code files are located, automatic break points may be set to provide a debugging environment for the user with merely the indication of the single parameter. The system and method thereby enable and provide an automated debugging environment for process design kit (PDK), Open PDK, interoperable PDK (iPDK), and/or PCell library/Pycell library development. The system may indeed be employed to enable and facilitate automated debugging in any environment that employs function calls for the setting or modification of a parameter within an object. The present invention is not limited by the exemplary computer programming languages illustrated herein, data formats, or exemplary application packages featured herein.
As electronic design automation (EDA) and circuit design is becoming more and more intricate and complex, the demand for interoperability of designers, design houses, and support products is increasing. Re-useability of code and quick, efficient, and potent debugging and designing tools are becoming increasingly essential. In performing the layout or silicon realization by a designer, such a task is rarely manually performed, but is instead automated through the use of parameterized cells (PCELLS or PYCELLS, used interchangeably herein) provided by a fabrication house or foundry, such as, for example: Taiwan Semiconductor Manufacturing Company (TSMC), among others, which will often provide a PDK or library of components to be used to form any cell in a given design. A PDK developer for a fabrication house will create this PDK for an end user, such as a circuit layout designer, who will use the PDK to automatically generate, for example, a layout based on a circuit schematic, adding in parameters, as needed, for the design relying on the PDK. Therefore, for a circuit designer to successfully generate a layout with the PDK, a PDK developer will need to debug mistakes or errors in the PDK which would propagate in to the layout generation. Conventionally, a developer of the PDK would need to generate and inspect a test layout, find the errors or mistakes, and determine which cell the mistakes or errors belong to. Then, the developer would need to attempt to locate (within a vast library of different cells and source code files of potentially different languages) where the particular callback function which instantiates instances of that cell and/or modifies parameters of that cell is located. The developer would then need to open the correct source file, scroll to the callback function, decipher the coding, manually insert a break point, and establish a debugging interface which will execute the callback function in a debugging mode. While this may seem a trivial matter, many factors, layers, and abstractions complicate the matter. Indeed, the original source code for the cell objects may be transformed from its original language (virtually any computer programming language capable of providing function calls and an object oriented structure) into an intermediate language and then stored in a database format in this transformed manner at run-time. Therefore, it is no small task to locate a parameter's callback function that can be buried in any of potentially thousands of heterogeneous source code files potentially comprising different computer programming languages. It is to be understood that the description of the exemplary embodiments below are not intended to limit the scope of the present invention to EDA embodiments, or to any particular environment, language, or format.
In the event of an error during the test layout generation, a developer, conventionally, has been forced to abandon the layout, search through massive amounts of code to locate where the problem is, and attempt to debug the situation manually through the insertion of break points, callouts, traces, and other such debugging tools and measures, as known to one of skill in the art. Such distractions can prove costly and time consuming in the overall EDA design flow, especially considering the iterative nature of such a design flow.
There is therefore a need for a system and method for automatically discovering and displaying parameters of cells in a layout. There is a need for a system and method which provide an interface for a developer to select a problematic parameter and have the source code files related thereto automatically located. There is a need for a system and method to locate a specific callback function in the source code pertaining to the setting of the selected parameter, load the source file, and present the relevant portion to the user. There is a need for a system and method to automatically set a break point at a relevant portion of the located callback function and provide the user an integrated debugging environment to enable the developer to evaluate and remedy problems with the source code, such that the PDK for generating a layout or circuit realization may be efficiently debugged while not adding substantial distractive and interruptive tasks for an otherwise efficiently engaged developer.